package modele;

import java.util.Vector;

import outils.*;

public class ModeleToile {

	private Vector<ModeleClasse> listeClasse;
	private Vector<ModeleRelation> listeRelation;
	public static String urlGeneration= "/home/kn";
	
	public ModeleToile()  {
		this.listeClasse = new Vector<ModeleClasse>();
		this.setListeRelation(new Vector<ModeleRelation>());
	}

	public ModeleToile(Vector<ModeleClasse> listeClasse, Vector<ModeleRelation> listeRelation) {
		this.listeClasse = listeClasse;
		this.listeRelation = listeRelation;
	}
	
	public void ajouter(ModeleClasse l) {
		this.listeClasse.add(l);
	}
	
	public void supprimer(ModeleClasse l) {
		for(int i =0; i < listeClasse.size();i++) {
			if(l.getNom().equalsIgnoreCase(listeClasse.get(i).getNom())
					&& l.getPositionX() == listeClasse.get(i).getPositionX()
					&& l.getPositionY() == listeClasse.get(i).getPositionY() ) {
				listeClasse.remove(i);
			}
		}
	}
	
	public int getTaille() {
		return this.listeClasse.size();
	}
	
	public ModeleClasse getClasse(int index) {
		return this.listeClasse.get(index);
	}
	
	public ModeleRelation getRelation(int index) {
		return this.listeRelation.get(index);
	}

	public Vector<ModeleClasse> getListeClasse() {
		return listeClasse;
	}

	public void setListeClasse(Vector<ModeleClasse> listeClasse) {
		this.listeClasse = listeClasse;
	}

	public void setListeRelation(Vector<ModeleRelation> listeRelation) {
		this.listeRelation = listeRelation;
	}

	public Vector<ModeleRelation> getListeRelation() {
		return listeRelation;
	}
	
	public void addRelations(PaireClasse pc)
	{
		ModeleRelation nouveau = null;
		
		if(pc.getTypeRelations().equals(Relations.ASSOCIATION)) {
			nouveau = new ModeleRelation(pc.getTypeRelations(), pc.getVpc1().getModele(),  pc.getVpc2().getModele(),
					Divers.stringToCard(pc.getCard1()),
					Divers.stringToCard(pc.getCard2()));
		}
		else {
			nouveau = new ModeleRelation(pc.getTypeRelations(), pc.getVpc1().getModele(),  pc.getVpc2().getModele(),
					null,null);
		}
		
		this.listeRelation.add(nouveau);
	}
	
	public void supprimerRelation(PaireClasse pc) {
		ModeleRelation aSupprimer = new ModeleRelation();
		
		for(ModeleRelation tmp : this.listeRelation) {
			if(tmp.getClasseSource().getNom().equals(pc.getVpc1().getModele().getNom()) && tmp.getClasseDest().getNom().equals(pc.getVpc2().getModele().getNom())) {
				System.out.println("relation a effacer");
				aSupprimer = tmp;
			}
		}
		
		this.listeRelation.remove(aSupprimer);
	}
	
	public void supprimerToutesLesClasses() {
		this.listeClasse.removeAllElements();
	}
	
	public void supprimerToutesLesRelations() {
		this.listeRelation.removeAllElements();
	}
}	